package controller;

import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractController;
import pojo.SysUser;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Map;

/**
 * @author 崔书健
 * @date 2024/7/24
 */
@Controller
@RequestMapping(value = "/hello")
public class HelloController extends AbstractController {

    private Logger logger = LogManager.getLogger(HelloController.class);
    @Override
    protected ModelAndView handleRequestInternal(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
        System.out.println("Spring MVC框架搭建成功。");
        return new ModelAndView("hello");
    }

    @RequestMapping(value = "/hello")
    public String hello() throws Exception{
//        System.out.println("Spring MVC框架搭建成功。");
        logger.info("我的第一个SpringMVC程序，运行成功啦！");
        // 跳转到hello页面
        return "hello";
    }

//    @RequestMapping(value = "/hello")
//    public String hello(@RequestParam(value = "realName",required = false) String realName) throws Exception{
//        logger.info("你好" + realName + "欢迎来到Spring MVC课堂");
//        // 跳转到hello.jsp页面
//        return "hello";
//    }

//    @RequestMapping(value = "/hello2")
//    public String hello2() throws Exception{
//        logger.info("hello控制器下的另外一个接口!");
//        // 跳转到hello页面
//        return "hello";
//    }
//    @RequestMapping(value = "/hello2")
//    public String hello2(@RequestParam(value = "userName",required = false) String realName) throws Exception{
//        logger.info("你好" + realName + "欢迎来到Spring MVC课堂");
//        // 跳转到hello页面
//        return "hello";
//    }

    @RequestMapping("/hello")
    public ModelAndView hello(@RequestParam String realName) throws Exception{
        logger.info("你好【" + realName + "】欢迎来到Spring MVC课堂");
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.addObject("realName",realName);
        modelAndView.setViewName("hello");
        return modelAndView;
    }

    @RequestMapping(value = "/hello2")
    public String hello2(Model model, @RequestParam String realName) throws Exception{
        logger.info("你好" + realName + "欢迎来到Spring MVC课堂");
        model.addAttribute("realName",realName);
        model.addAttribute(realName);
        SysUser sysUser = new SysUser();
        sysUser.setRealName(realName);
        model.addAttribute("currentUser",sysUser);
        model.addAttribute(sysUser);
        // 跳转到hello页面
        return "hello";
    }

    @RequestMapping("/hello3")
    public String hello3(Map<String,Object> map, @RequestParam String realName)throws Exception{
        logger.info("你好" + realName + "欢迎来到Spring MVC课堂");
        map.put("realName",realName);
        return "hello";
    }
}
